//
//  NSNotificationCenter+Addition.h
//  GreWords
//
//  Created by Song on 13-5-20.
//  Copyright (c) 2013年 Cui Hao. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <MLFoundation/NSNotificationCenter+MUSAutoSysthesis.h>

@class LLGift;
@class LLPartyInvitation;

#define LLCreateNotificationWithNoObject(NotificationName) CreateNotificationWithNoObject(NotificationName##InLiveLy)
#define LLCreateNotificationWithObjectOfType(NotificationName, type) CreateNotificationWithObjectOfType(NotificationName##InLiveLy, type)


@interface NSNotificationCenter (LLAddition)

LLCreateNotificationWithNoObject(LiveStageEmptyPlaceTapped);

LLCreateNotificationWithObjectOfType(LiveStageCommentEmptyPlaceTapped, UITapGestureRecognizer *);

LLCreateNotificationWithObjectOfType(LiveStageCommentEmptyPlaceMaybeTapped, UITapGestureRecognizer *);

LLCreateNotificationWithNoObject(UserWillLogin);

LLCreateNotificationWithNoObject(UserDidLogin);

LLCreateNotificationWithNoObject(UserWillLogout);

LLCreateNotificationWithNoObject(UserDidLogout);

LLCreateNotificationWithNoObject(UserAuthTokenDidUpdate);

LLCreateNotificationWithNoObject(UserUpdated);

LLCreateNotificationWithNoObject(UserCacheCreated);

LLCreateNotificationWithNoObject(UserNeedVerify);

LLCreateNotificationWithNoObject(UserNeedLogout);

LLCreateNotificationWithObjectOfType(UserSendGift, LLGift *);

LLCreateNotificationWithObjectOfType(AudienceHotAreaTapped, NSString *);

LLCreateNotificationWithNoObject(LongConnectionRegistered);

LLCreateNotificationWithNoObject(LiveStreamingStarted);               //When host press start button and stream address received
LLCreateNotificationWithNoObject(LiveStreamingConnectionPushStarted); //When the host connection established for the first time
LLCreateNotificationWithNoObject(LiveStreamingOBSCreatedPushStarted); //When obs host created room success(OBS);

LLCreateNotificationWithNoObject(LiveStreamingConnectionPullStarted); //When the audience connection established for the first time

LLCreateNotificationWithNoObject(RemoteNotificationReceived);


LLCreateNotificationWithNoObject(GuestingGuestFirstFrameSet);

LLCreateNotificationWithObjectOfType(PartyAccepted, LLPartyInvitation *);
LLCreateNotificationWithObjectOfType(PartyRejected, LLPartyInvitation *);

#pragma mark - Directly
LLCreateNotificationWithObjectOfType(ChatMessagesInputAccessoryViewFrameChanged, UIView *);
LLCreateNotificationWithObjectOfType(ChatMessagesDrawerEvent, id);
LLCreateNotificationWithObjectOfType(ChatMessagesPasteImage, id);

#pragma mark - Channels
LLCreateNotificationWithNoObject(DanmakuEmptyTapped);
LLCreateNotificationWithNoObject(ChannelsRefresh);

#pragma mark - LiveBanner

LLCreateNotificationWithNoObject(LiveBannerStopPlayer);
LLCreateNotificationWithNoObject(LiveBannerResumePlayer);

@end
